Summary: Ex3_3_25_Bor03
Functions: app nil cons from s zWadr prefix
Constructors: nil cons s
Variables: YS X XS Y L
Arities:
ar(app) = 2
ar(nil) = 0
ar(cons) = 2
ar(from) = 1
ar(s) = 1
ar(zWadr) = 2
ar(prefix) = 1
Replacement map:
&181;(app)={1,2}
&181;(nil)={}
&181;(cons)={1}
&181;(from)={1}
&181;(s)={1}
&181;(zWadr)={1,2}
&181;(prefix)={1}
Rules: (file Ex3_3_25_Bor03)
app(nil,YS) -> YS
app(cons(X,XS),YS) -> cons(X,app(XS,YS))
from(X) -> cons(X,from(s(X)))
zWadr(nil,YS) -> nil
zWadr(XS,nil) -> nil
zWadr(cons(X,XS),cons(Y,YS)) -> cons(app(Y,cons(X,nil)),zWadr(XS,YS))
prefix(L) -> cons(nil,zWadr(L,prefix(L)))
obj Ex3_3_25_Bor03 is
sort S .
op app : S S -> S .
op nil : -> S .
op cons : S S -> S [strat (1 0)] .
op from : S -> S .
op s : S -> S .
op zWadr : S S -> S .
op prefix : S -> S .
vars YS X XS Y L : S .
eq app(nil,YS) = YS .
eq app(cons(X,XS),YS) = cons(X,app(XS,YS)) .
eq from(X) = cons(X,from(s(X))) .
eq zWadr(nil,YS) = nil .
eq zWadr(XS,nil) = nil .
eq zWadr(cons(X,XS),cons(Y,YS)) = cons(app(Y,cons(X,nil)),zWadr(XS,YS)) .
eq prefix(L) = cons(nil,zWadr(L,prefix(L))) .
endo
Negative results
--
Positive results
-
Ex3_3_25_Bor03 can be proved µ-terminating by using
Lucas' transformation. The TRS Ex3_3_25_Bor03_L:
app(nil,YS) -> YS
app(cons(X),YS) -> cons(X)
from(X) -> cons(X)
zWadr(nil,YS) -> nil
zWadr(XS,nil) -> nil
zWadr(cons(X),cons(Y)) -> cons(app(Y,cons(X)))
prefix(L) -> cons(nil)
is terminating (use
MuTerm).
-
The µ-termination of Ex3_3_25_Bor03 can be proved by using Giesl and Middeldorp's
transformation: The TRS Ex3_3_25_Bor03_GM:
a__app(nil,YS) -> mark(YS)
a__app(cons(X,XS),YS) -> cons(mark(X),app(XS,YS))
a__from(X) -> cons(mark(X),from(s(X)))
a__zWadr(nil,YS) -> nil
a__zWadr(XS,nil) -> nil
a__zWadr(cons(X,XS),cons(Y,YS)) -> cons(a__app(mark(Y),cons(mark(X),nil)),zWadr(XS,YS))
a__prefix(L) -> cons(nil,zWadr(L,prefix(L)))
mark(app(X1,X2)) -> a__app(mark(X1),mark(X2))
mark(from(X)) -> a__from(mark(X))
mark(zWadr(X1,X2)) -> a__zWadr(mark(X1),mark(X2))
mark(prefix(X)) -> a__prefix(mark(X))
mark(nil) -> nil
mark(cons(X1,X2)) -> cons(mark(X1),X2)
mark(s(X)) -> s(mark(X))
a__app(X1,X2) -> app(X1,X2)
a__from(X) -> from(X)
a__zWadr(X1,X2) -> zWadr(X1,X2)
a__prefix(X) -> prefix(X)
is terminating (use
Metacombination with AProVE).
-
The µ-termination of Ex3_3_25_Bor03 is proved in
[Bor03, Example 3.3.25] by using CSRPO and automatically by MuTerm:
- marking map:
m(cons,2)=m(_cons,2)=m(_app,1)=m(_zWadr,1)={from,app,zWadr}
m(zWadr,2)={from,app,zWadr,prefix}
- precedence:
zWadr = _zWadr > cons,app,nil
app = _app > cons
from > cons,_from,s
prefix > cons,nil,_zWadr,_prefix
- status:
st(f)=mul for all symbols f.
-
The µ-termination of Ex3_3_25_Bor03 can also be proved by using a
polynomial interpretation (computed with MuTerm):
Proof of termination for CS-TRS Ex3_3_25_Bor03:
[app](X1,X2) = X1 + X2 + 1
[nil] = 0
[cons](X1,X2) = X1
[from](X) = X + 1
[s](X) = X
[zWadr](X1,X2) = X1 + X2 + 2
[prefix](X) = X + 1
-
The µ-termination of Ex3_3_25_Bor03 can also be proved by using CSDP (computed
by MuTerm).